热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

差值|传统_Inceptionv3通用设计原则分解卷积不对称卷积下采样模块labelsmoothing

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Inceptionv3通用设计原则分解卷积不对称卷积下采样模块labelsmoothing相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Inception v3 通用设计原则分解卷积不对称卷积下采样模块label smoothing相关的知识,希望对你有一定的参考价值。



Inception v3

Rethinking the Inception Architecture for Computer Vision


Abstract

通过增加模型大小和增加参数数量可以提升模型性能,但是要考虑计算资源,模型轻量化,兼顾计算效率,提出了分解卷积和label smoothing。


通用设计原则

(作者推测的)


  1. 避免过度降维或者收缩特征bottleneck(瓶颈路段,我的理解是所有信息全部堵在一个地方降维,造成信息丢失),特别是在网络浅层,容易造成信息丢失。特征图size应当慢慢变小。
  2. 特征越多收敛越快,相互独立的特征越多输入的信息分解的越彻底,特征越分散有利于特征处理(例如,猫的部位区分清楚则更有利于后期,特征杂糅在一起8行)。
  3. 3* 3和5* 5大卷积之前可以用1* 1降维信息不会损失,作者假设原来feature map上感受野有部分重合,卷积后的像素也是高度相似的,通道上每个map都类似,1* 1卷积跨通道降维仍保持相关性。
  4. Balance the width and depth of the network,可以让计算量平均分配,并行提升w和d可以让计算效率提升。

分解卷积Factorizing Convolutions


大卷积分解成小卷积

5* 5分成两个3* 3我在VGG里先看到的,这里作者没引VGG?

5* 5卷积分解成2个3* 3卷积,7* 7分解成3个3* 3卷积,感受野不变,最后一层等效于fc(看作9对3,输出1的fc):


  1. 增加深度
  2. 减少了计算量,减少了网络参数,训练更快
  3. 增加非线性表示能力


1.相同卷积核个数和feature map尺寸情况下5* 5比3* 3高2.78倍计算量(25/9)


2.为什么不继续分成2*2卷积?


3* 3分解成2* 2卷积只能减少11%参数量,分解成n*1可以减少33%,后面写不对称卷积


Does this replacement result in any loss of expressiveness?

分解卷积是否会影响模型表达能力?(不会)

If our main goal is to factorize the linear part of the computation, would it not suggest to keep linear activations in the first layer?

是否保留第一层feature map的非线性激活函数(要保留relu)

(虚线去掉第一层relu,蓝色保留)根据实验结果来看,分解卷积第一层的relu可以提高模型的非线性表示能力(可学习空间增强了)


空间可分离卷积/不对称卷积

if 3* 3卷积继续分解成2* 2卷积,只能减少11%参数量,分解成n* 1可以减少33%,eg,n* n卷积拆成两个串联n* 1和1* n卷积。

用 1 个 1×3 卷积和 1 个 3×1 卷积替换 3×3 卷积



计算参数:


(1* 3* c )*c+(3 * 1 * c) *c=6c^2


(3* 3* c )*c=9c^2


文中指出n越大节省的运算量更大 (具体我没去运算),不对称卷积效果在网络浅层用不好,但在m*m(12中等feature map上效果很好。




权值共享lenet5:


所谓权值共享就是说给定一张输入图片,用一个卷积核来卷积这张图,卷积核里的值叫做权重,这张图的每个位置是被同一个卷积核扫的,即卷积的时候所用的权重是一样的。其实权值共享这个词说全了就是整张图片在使用同一个卷积核内的参数,比如一个331的卷积核,这个卷积核内9个的参数被整张图共享,而不会因为图像内位置的不同而改变卷积核内的权系数。说的再直白一些,就是用一个卷积核不改变其内权系数的情况下卷积处理整张图片(当然CNN中每一层不会只有一个卷积核的,这样说只是为了方便解释而已)。
作用:大大减少网络训练参数的同时,还可以实现并行训练。
参考:https://blog.csdn.net/m0_37957160/article/details/114693985


基于以上提出的3种模块:

Module A

Module B we chose n = 7 for the 17 × 17 grid

Module C 扩展滤波器组(不对称卷积横向之后再把feature map叠起来,加宽网络,升维增加channel数量,promote high dimensional representations,only on the coarsest grid,只在最后channel比较多的地方使用 (最后几层))


下采样模块

池化前升维度,避免信息丢失

左边先pooling后升维容易造成信息丢失,右边先升维再池化计算量太大(因为升维之后channel变多,算的更多)

上图是v3论文提出的下采样模块,左边是从操作角度看的图,右边是从特征图大小角度看的图,这样并行的结构在下采样和升维(信息丢失少)的同时不增加计算量。


Label Smoothing regularization(LSR)正则化

cross entropy loss&softmax:

传统的one-hot编码的标签向量yi为:






y


i



=











1


,








i


=


 target 










0


,








i





 target 









y_i=\\left\\\\beginarrayll 1, & i=\\text target \\\\ 0, & i \\neq \\text target \\endarray\\right.


yi=1,0,i= target i= target 

在训练网络时,最小化损失函数(交叉熵损失函数)的pi由由对模型倒数第二层输出的logits向量z应用Softmax函数计算得到。

传统one-hot编码标签学习过程中,鼓励模型预测为目标类别的概率趋近1,非目标类别的概率趋近0(softmax里采用exp进行非负处理,导致softmax的极端化),即最终预测的logits向量中目标类别zi的值会趋于无穷大,使得模型向预测正确与错误标签的logit差值无限增大的方向学习,而过大的logit差值会使模型缺乏适应性,对它的预测过于自信。在训练数据不足以覆盖所有情况下,这就会导致网络过拟合,泛化能力差

LSR:

思想:label smoothing结合了均匀分布思想,用更新的标签向量y^i来替换传统的ont-hot编码的标签向量yhot:







y


^



i



=











1





α


,



i


=


 target 










α


/


K





1


,



i





 target 









\\haty_i=\\left\\\\beginarrayll 1-\\alpha, \\quad i=\\text target \\\\ \\alpha / K-1, \\quad i \\neq \\text target \\endarray\\right.


y^i=1α,i= target α/K1,i= target 

K为多分类的类别总个数,α是一个较小的超参数(一般取0.1)

标签平滑后的分布就相当于往真实分布中加入了噪声,避免模型对于正确标签过于自信,使得预测正负样本的输出值差别不那么大,从而避免过拟合,提高模型的泛化能力,正则化作用。
从确定类别到:像某个类别的程度。



lsr避免梯度爆炸/消失
不用lsr loss对参数求导之后的值会很小/大(因为输出的概率被极化了(cross entropy里loss最小化ln的值必须靠近1,导致softmax输出的概率要接近1)),导致梯度爆炸/消失。
使用lsr之后loss对参数求导的值不会过小/过大,梯度变得平缓(?),可以避免梯度爆炸/消失。


When Does Label Smoothing Help?用实验说明为什么LSR起效。(有空再看)
参考:https://www.cnblogs.com/irvingluo/p/13873699.html


Inceptionv3架构

ABC三个模块输入输出feature map size不变,之间通过采样模块连接。

We have marked the convolution with 0-padding, which is used to maintain the grid size. 0-padding is also used inside those Inception modules that do not reduce the grid size. logits are the scores of classes


Training Methodology

momentum [19] with a decay of 0.9

gradient clipping

learning rate of 0.045


My Conclusion


  1. 特征融合是个好东西
  2. 不对称卷积和分解卷积的减少计算量的轻量化思想很好
  3. smoothing均匀分布思想
  4. 在模型蒸馏中使用Label smoothing会导致性能下降

推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • NotSupportedException无法将类型“System.DateTime”强制转换为类型“System.Object”
    本文介绍了在使用LINQ to Entities时出现的NotSupportedException异常,该异常是由于无法将类型“System.DateTime”强制转换为类型“System.Object”所导致的。同时还介绍了相关的错误信息和解决方法。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
author-avatar
迷失刀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有